/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import controladores.ConvenioXPeriodoXEstudianteFacadeLocal;
import entidades.Area;
import entidades.Convenio;
import entidades.DetalleActividadesSemestre;
import entidades.Entidad;
import entidades.Estudiante;
import entidades.InformeFinalPracticaEmpresarial;
import entidades.Sitio;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpServletRequest;
import negocio.DetalleActividadesSemestreInterface;
import negocio.EstudianteInterface;
import negocio.InformeFinalPracticaEmpresarialInterface;
import org.primefaces.component.datatable.DataTable;
import entidades.SupervisorEntidad;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class FInformeFinalPracticaEmp implements Formato{
    private InformeFinalPracticaEmpresarial informeFinalPracticaEmpresarial = new InformeFinalPracticaEmpresarial();
    @EJB
    private DetalleActividadesSemestreInterface detalleActividadesSemestreInterface;
    @EJB
    private InformeFinalPracticaEmpresarialInterface informeFinalPracticaEmpresarialInterface;
    @EJB
    private ConvenioXPeriodoXEstudianteFacadeLocal convenioXPeriodoXEstudianteFacadeLocal;
    
    private EstudianteInterface estudianteInterface;
    private Convenio convenio;
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private Estudiante estudiante;
    private Entidad entidad = new Entidad();
    private Sitio sitio = new Sitio();
    private SupervisorEntidad supervisorEntidad = new SupervisorEntidad();
    private Area area = new Area();
    
    private List<DetalleActividadesSemestre> listaActividadesSemestre;
    private DetalleActividadesSemestre detalleActividadesSemestreSelected;
    private DataTable htmlDataTableActividadesSemestre;
    private int index;
    
    private Date fechaIni;
    private Date fechaFin;
    private String actividad;
    private String descripcion;
    private String observaciones;
    
    private String ESTADO_PERIODO = "ACT";
    
    
    
    public FInformeFinalPracticaEmp(){
    }
    
    @PostConstruct
    public void inicialiarVariables(){
        listaActividadesSemestre = new ArrayList<DetalleActividadesSemestre>();    
        estudiante = new Estudiante();
        estudiante = sessionBean.getUsuarioSession().getEstudiante();
        informeFinalPracticaEmpresarial.setFechaInforme(new Date());
        entidad = convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudiante.getIdEstudiante(), ESTADO_PERIODO).getIdSitio().getIdEntidad();
        sitio = convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudiante.getIdEstudiante(), ESTADO_PERIODO).getIdSitio();
        supervisorEntidad = convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudiante.getIdEstudiante(), ESTADO_PERIODO).getConvenioXPeriodo().getIdSupervisorEntidad();
        area = convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudiante.getIdEstudiante(), ESTADO_PERIODO).getConvenioXPeriodo().getIdArea();
    }
        @Override
        public void ConsultarFormato(){
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.        
        }

        @Override
        public void DiligenciarFormato() {
            System.out.println("Ingresa al metodo de guardar");
            try{
                informeFinalPracticaEmpresarial.setConvenioXPeriodoXEstudiante(convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudiante.getIdEstudiante(),ESTADO_PERIODO));
                informeFinalPracticaEmpresarial.setIdInformeFinalPractica(informeFinalPracticaEmpresarialInterface.obtenerMaxId());
                for(DetalleActividadesSemestre das : listaActividadesSemestre){
                    das.setIdDetalleActividadSemestre(detalleActividadesSemestreInterface.obtenerMaxId());
                    das.setIdInformeFinalPractica(informeFinalPracticaEmpresarial);
                }
                informeFinalPracticaEmpresarial.setDetalleActividadesSemestreList(listaActividadesSemestre);
                informeFinalPracticaEmpresarialInterface.crear(informeFinalPracticaEmpresarial);
                FacesMessage facesMessage = new FacesMessage("Datos guardados con éxito");
                FacesContext.getCurrentInstance().addMessage(null, facesMessage);
                limpiarCampos();
            } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
            }
        }

        @Override
        public void AprobarFormato() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void EditarFormato() {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

    private void limpiarCampos(){
        informeFinalPracticaEmpresarial = null;
        listaActividadesSemestre = null;
        fechaIni = null;
        actividad = "";
        descripcion = "";
        observaciones = "";
        fechaFin = null;
    
    }
    public void cargarActividadesSemestre(ActionEvent actionEvent){
        DetalleActividadesSemestre detalleActividadesSemestre = new DetalleActividadesSemestre(listaActividadesSemestre.size(), fechaIni, actividad, descripcion, observaciones, fechaFin);
        listaActividadesSemestre.add(detalleActividadesSemestre);
        fechaIni = null;
        actividad = "";
        descripcion = "";
        observaciones = "";
        fechaFin = null;
    }   
     
    public void quitarActividadesSemestre(ActionEvent actionEvent){
        for(int i = 0; i < listaActividadesSemestre.size(); i++){
             if (index == listaActividadesSemestre.get(i).getIdDetalleActividadSemestre()) {
                listaActividadesSemestre.remove(i);
                index = 0;
            }
         
         }
    }
    
    public void cargarIndice(ActionEvent actionEvent) {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        index = Integer.parseInt(request.getParameter("param"));
    }
    
    public void validarEntradas(ActionEvent event){
        
    }
    
    public InformeFinalPracticaEmpresarial getInformeFinalPracticaEmpresarial() {
        return informeFinalPracticaEmpresarial;
    }

    public void setInformeFinalPracticaEmpresarial(InformeFinalPracticaEmpresarial informeFinalPracticaEmpresarial) {
        this.informeFinalPracticaEmpresarial = informeFinalPracticaEmpresarial;
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public Estudiante getEstudiante() {
        return estudiante;
    }

    public void setEstudiante(Estudiante estudiante) {
        this.estudiante = estudiante;
    }

    public DetalleActividadesSemestre getDetalleActividadesSemestre() {
        return detalleActividadesSemestreSelected;
    }

    public void setDetalleActividadesSemestre(DetalleActividadesSemestre detalleActividadesSemestre) {
        this.detalleActividadesSemestreSelected = detalleActividadesSemestre;
    }

    public Date getFechaIni() {
        return fechaIni;
    }

    public void setFechaIni(Date fechaIni) {
        this.fechaIni = fechaIni;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public String getActividad() {
        return actividad;
    }

    public void setActividad(String actividad) {
        this.actividad = actividad;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public DataTable getHtmlDataTableActividadesSemestre() {
        return htmlDataTableActividadesSemestre;
    }

    public void setHtmlDataTableActividadesSemestre(DataTable htmlDataTableActividadesSemestre) {
        this.htmlDataTableActividadesSemestre = htmlDataTableActividadesSemestre;
    }

    public List<DetalleActividadesSemestre> getListaActividadesSemestre() {
        return listaActividadesSemestre;
    }

    public void setListaActividadesSemestre(List<DetalleActividadesSemestre> listaActividadesSemestre) {
        this.listaActividadesSemestre = listaActividadesSemestre;
    }

    public Entidad getEntidad() {
        return entidad;
    }

    public void setEntidad(Entidad entidad) {
        this.entidad = entidad;
    }

    public Sitio getSitio() {
        return sitio;
    }

    public void setSitio(Sitio sitio) {
        this.sitio = sitio;
    }

    public SupervisorEntidad getSupervisorEntidad() {
        return supervisorEntidad;
    }

    public void setSupervisorEntidad(SupervisorEntidad supervisorEntidad) {
        this.supervisorEntidad = supervisorEntidad;
    }

    public Area getArea() {
        return area;
    }

    public void setArea(Area area) {
        this.area = area;
    }
    
    
        
}
